// JavaScript Document
//variables de alcance GLOBAL

var misFijosHash	= new Hashtable();

var misGruposFijosHash = new Hashtable();
var reqHandlerMisFijos = null;

var reqHandler	= null;

var orderTypeMisFijos	= "A";
var sendCommandPanelActive = false; //indica si el panel de enviar comandos esta activo.
if (FIJOS_SELECCIONADOS.length>0){
	fijosSeleccionadosId = FIJOS_SELECCIONADOS.split(",");
	cMapController.getMapActive().setFijosVisiblesId(fijosSeleccionadosId);
}

var filtrarFijosInactivos = false;

var textToSearchFijo	= "";
var fijosMonitoreadosId	= new Array();

fijosPopupActive = null;
if (msie){
  fijosPopupClass = OpenLayers.Class(OpenLayers.Popup.AnchoredBubble, {
          'autoSize': true,
      'minSize': new OpenLayers.Size(400,400),
      'maxSize': new OpenLayers.Size(600,480)
      });
}else{
  fijosPopupClass = OpenLayers.Class(OpenLayers.Popup.FramedCloud, {
          'autoSize': true,
      'maxSize': new OpenLayers.Size(600,480)
       });
}
//definiciones para vistas de label de fijos en el mapa

/**************************FUNCIONES PARA PANTALLA PRINCIPAL****************************/

	function createPopUpGroupFijos(e, idGrupo, element,isMenu){
	   PopUpMenuMap = new PopupMenu();

	   if (LOGIN.PERMISOS[0]){
	  	  PopUpMenuMap.add('Modificar', function(target) {
    	 	 modificarGrupoFijos(idGrupo.toString());
	   	  });
	   	  PopUpMenuMap.add('Eliminar', function(target) {
	         eliminarGrupoFijos(idGrupo.toString());
  	      });
	      PopUpMenuMap.addSeparator();
	      PopUpMenuMap.add('Asignar fijos', function(target) {
	         asignarGrupoFijos(idGrupo.toString());
  	      });
		  PopUpMenuMap.addSeparator();
	   }
	   PopUpMenuMap.add('Seleccionar fjos', function(target) {
	         selectFijosGrupo(true, idGrupo.toString());
  	      });
	   PopUpMenuMap.add('Quitar seleccion', function(target) {
	         selectFijosGrupo(false, idGrupo.toString());
  	      });
       PopUpMenuMap.setSize(140, 0);
       PopUpMenuMap.bind(element); // target is this pre block
       PopUpMenuMap.show(e,isMenu);
	   return false;
	}

	function createPopUpFijo(e, idFijo, element,isMenu){
	   PopUpMenuMap = new PopupMenu();
	   if (indexOfArray(cMapController.getMapActive().getFijosVisiblesId(),idFijo.toString())!=-1){
		    PopUpMenuMap.add('Ocultar', function(target) {
		    	cMapController.getMapActive().ocultarFijo(idFijo.toString());
	   		});
	 	    PopUpMenuMap.add('Localizar en el mapa', function(target) {
	 	    	dejarDeSeguir();
	 	    	cMapController.getMapActive().localizarFijo(idFijo.toString());
	  	    });
	   }
	   else {
	   		PopUpMenuMap.add('Ver y localizar', function(target) {
				if (cMapController.getMapActive().mostrarFijo(idFijo.toString())){
					dejarDeSeguir();
					cMapController.getMapActive().localizarFijo(idFijo.toString());

				    }
	  	        });
	   		PopUpMenuMap.add('Ver', function(target) {
				cMapController.getMapActive().mostrarFijo(idFijo.toString());
	  	        });
	   }

//	   if (LOGIN.PERMISOS[0]){ //SE PUEDE AGRUPAR/DESAGRUPAR
//		   if (parseInt(misFijosHash.get(idFijo.toString()).grupoId)!=0){
//		   		PopUpMenuMap.addSeparator();
//		   		PopUpMenuMap.add('Desagrupar', function(target) {
//	      			desagruparFijo(idFijo.toString());
//	   			});
//		   }
//	   }
	   
	   if(LOGIN.PERMISOS[1]){ //PUEDE MONITOREAR
	   		if (indexOfArray(fijosMonitoreadosId,idFijo.toString())!=-1)
		    	PopUpMenuMap.add('Dejar de monitorear', function(target) {
		   			noMonitorearFijo(idFijo.toString());
		   		});
		   else
	   			PopUpMenuMap.add('Monitorear', function(target) {
		   			monitorearFijo(idFijo.toString());
		   		});
	   }

	   if(LOGIN.isBykom && (cMapController.getMapActive().getObjetoMonitorearEventoCliente() != null && cMapController.getMapActive().getObjetoMonitorearEventoCliente().objetivoCuenta == 1  &&
				   cMapController.getMapActive().getObjetoMonitorearEventoCliente().idCuenta.toString() == idFijo.toString() )
		 ){
		   if(cMapController.getMapActive().getEstadoActivoMonitorearEventoCliente()){
			   PopUpMenuMap.add('Dejar de seguir evento', function(target) {
				   cMapController.getMapActive().desactivarMonitorearEvento();
			   });
		   }else{
			   PopUpMenuMap.add('Seguir evento', function(target) {
				   cMapController.getMapActive().activarMonitorearEvento();
			   });
		   }
	   }
	   PopUpMenuMap.addSeparator();
	   // ACTIVAR/DESACTIVAR
	   if (LOGIN.PERMISOS[11]){
	   	   PopUpMenuMap.addSeparator();
		   if (parseInt(misFijosHash.get(idFijo.toString()).activo)==1)
		   		PopUpMenuMap.add('Pasar a estado inactivo', function(target) {
	      			activarFijo(idFijo.toString(),0);
	   			});
		   else
		   		PopUpMenuMap.add('ACTIVAR', function(target) {
	      			activarFijo(idFijo.toString(),1);
	   			});
	   }
	   // VISUALIZAR CONTACTOS
	   if ((LOGIN.PERMISOS[16])){
	   		PopUpMenuMap.addSeparator();
	 	    PopUpMenuMap.add('Ver contactos de este fijo', function(target) {
		   		createOpenWindow_contactoFijos(idFijo.toString());
	   		});
	   }

	   PopUpMenuMap.setSize(140, 0);
	   PopUpMenuMap.bind(element); // target is this pre block
	   PopUpMenuMap.show(e,isMenu);
	   return false;
	   }

	function selectFijosGrupo(checkedValue, idGrupo){
		idGrupo = idGrupo.toString();
		var fields =  document.getElementsByName('boxFijos[]');
		for (var i = 0; i < fields.length; i++){
			var fijo = misFijosHash.get(fields[i].value.toString());
			if ((fijo!=null)&&(fijo.grupoId.toString()==idGrupo)&&(fields[i].checked!=checkedValue)){
				fields[i].click();
			}
		}
	}


	function checkedFijo(check){
		if (check.checked)
			cMapController.getMapActive().getFijosSeleccionadosId().push(check.value);
		else {
			pos=indexOfArray(cMapController.getMapActive().getFijosSeleccionadosId(),check.value);
			if (pos!=-1)
				cMapController.getMapActive().getFijosSeleccionadosId().splice(pos,1);
			}
	}

	function ordenarMisFijos(){
		if (orderTypeMisFijos=="A"){
			orderTypeMisFijos="D";
			printTableMisFijos();
			//document.getElementById('orderBTNmisFijos').style.backgroundImage='url(images/minimenu/BTNorderAZ.gif)';
			$j("#orderBTNmisFijos").removeClass("z_a").addClass("a_z");
		}else{
			orderTypeMisFijos="A";
			printTableMisFijos();
			$j("#orderBTNmisFijos").removeClass("a_z").addClass("z_a");
			//document.getElementById('orderBTNmisFijos').style.backgroundImage='url(images/minimenu/BTNorderZA.gif)';
		}
	}

	function printTableMisFijos(){
		fijosTree = new dTree('fijosTree');
		fijosTree.add(0,-1,'');

		var gruposList = misGruposFijosHash.values();

		var misFijosList = misFijosHash.values();
		var sortArray = new SortArray(gruposList,"QUICKSORT");
		sortArray.ordenar(orderTypeMisFijos,'nombre');

		var gruposListKeys = new Array();
		for (var i=0; i<gruposList.length; i++)
			gruposListKeys.push(gruposList[i].id);

		var putGroup = false;
		for (var i=0; i<gruposList.length; i++) {
			var groupName = '<span class="inputLBL" oncontextmenu="return createPopUpGroupFijos(event,'+gruposList[i].id+',this);">'+gruposList[i].nombre+'</span>';
			if (LOGIN.objetivo==4){
				//si el objetivo es un "ALIAS" solo muestro grupos que contengan al menos 1 vehiculo.
				putGroup = false;
				for (var u=0; u < misFijosList.length; u++ ){
					if (misFijosList[u].grupoId == gruposList[i].id){
						putGroup = true;
						u = misFijosList.length;
					}
				}
				if (putGroup)
					fijosTree.add(i+1,0,groupName,'','','','js/dtree/img/folder.gif');
			}
			else
				fijosTree.add(i+1,0,groupName,'','','','js/dtree/img/folder.gif');
		}

		var sortArray = new SortArray(misFijosList,"QUICKSORT");
		sortArray.ordenar(orderTypeMisFijos,'label');
		var searchCount = 0;
		var searchGroupsToExpand = new Array();
		for (var i=0; i<misFijosList.length; i++){
			var inactivo = false;
			if ((parseInt(misFijosList[i].activo)==0)&&(parseInt(LOGIN.objetivoDB) !=2))
				inactivo = true;
			if (!(filtrarFijosInactivos && inactivo)){
				checked = '';
				if (indexOfArray(cMapController.getMapActive().getFijosSeleccionadosId(),misFijosList[i].id.toString())!=-1)
					checked='checked';
				var checkVal = '<input type="checkbox" name="boxFijos[]" value="'+misFijosList[i].id+'" '+checked+' onClick="checkedFijo(this);" >';
				var bgColor = '';
				var itemSearched = false;
				if ((textToSearchFijo!='')&&(misFijosList[i].label.match(textToSearchFijo)!=null)){
					searchCount++;
					itemSearched = true;
				}
				itemSpan = '<table cellpadding="0" cellspacing="0" border="0" class="dTreeTableContent">'
				itemSpan += '<tr valign="middle" oncontextmenu="return createPopUpFijo(event,'+misFijosList[i].id+',this,true);">';
				if(itemSearched){
					if (searchCount==1)
						itemSpan += '<td><span class="inputSEARCHED" id="firstFijoSearch">'+misFijosList[i].label+'</span></td>';
					else
						itemSpan += '<td><span class="inputSEARCHED">'+misFijosList[i].label+'</span></td>';
				}
				else
					if(inactivo)
						itemSpan += '<td><span class="inputINACTIVO">'+misFijosList[i].label+'</span></td>';
					else
						itemSpan += '<td><span class="inputLBL">'+misFijosList[i].label+'</span></td>';

				//VISIBILIDAD
				if (indexOfArray(cMapController.getMapActive().getFijosVisiblesId(),misFijosList[i].id.toString())!=-1){
					itemSpan += '<td align="center" valign="middle">';
					itemSpan += '<img src="images/puntoVisible.gif" border="0" onclick="cMapController.getMapActive().localizarFijo('+misFijosList[i].id+');" style="cursor:pointer;" title="Fijo visible (Click para localizar)"/>';
					itemSpan += '</td>';
				}

				//SELECCION
				if (misFijosList[i].id.toString() == cMapController.getMapActive().getSeleccionActual()){
					itemSpan += '<td align="center" valign="middle">';
					itemSpan += '<img src="images/fijoSeleccionado.gif" border="0" title="Fijo seleccionado"/>';
					itemSpan += '</td>';
				}
				//MONITOREO
				if (indexOfArray(fijosMonitoreadosId,misFijosList[i].id.toString())!=-1){
					itemSpan += '<td>';
					itemSpan += '<img src="images/movilMonitoreado.gif" border="0" title="Fijo en monitoreo"/>';
					itemSpan += '</td>';
				}

				itemSpan += '</tr>';
				itemSpan += '</table>';
				var posGroup = 0;
				/*
				if (parseInt(misFijosList[i].grupoId)!=0){
					var pos = indexOfArray(gruposListKeys,misFijosList[i].grupoId.toString());
					if (pos!=-1)
						posGroup = pos+1;
				}	*/
				var nodeId = i+gruposList.length+1;
				fijosTree.add(nodeId, posGroup, itemSpan, '', '', '', '', '', false, checkVal);
				/*
				if (itemSearched){
					if ((posGroup!=0) && (indexOfArray(searchGroupsToExpand,posGroup)==-1))
						searchGroupsToExpand.push(posGroup);
				}*/
			}
		}

		document.getElementById('divListaFijos').innerHTML = fijosTree;

		if (textToSearchFijo!=''){ //SI HUBO UNA BUSQUEDA DE FIJO
			document.getElementById('countSearchFijo').innerHTML = searchCount + ' resultados';
			for (var i=0; i<searchGroupsToExpand.length; i++)
				fijosTree.openTo(searchGroupsToExpand[i], false);
			//muevo el scroll hasta el primer fijo encontrado.
			if (searchCount>0){
				var containerDiv = document.getElementById('minimenuContentFijosPpal');
				containerDiv.scrollTop=0;
				var fistSearchElem = document.getElementById('firstFijoSearch');
				var dim = myBoundingHandler.getDimension(fistSearchElem);
				containerDiv.scrollTop=dim.y-200;
			}
		}
	}

/***************************CARGA DE POSIMOVIL********************************/
	var flagCargarPosiFijo = false;
	function CargarPosiFijo(idFijo, callback) {

		if (flagCargarPosiFijo) return;
		flagCargarPosiFijo = true;
    	$j("#iconoMapa").removeClass().addClass("icono_mapa_activo");
		var params = { COMMAND: "REFRESH",
					   cuentas: idFijo
					 };
		var myAjax = new MyAjax();
		var onReady = function(req){
						     var results = jQuery.parseJSON(req.responseText);
							 if ((results.length != 'undefined')&&(results.length>0)) {
							 	//cargo las posimoviles
								for (var i = 0; i < results.length; i++) {
									var fijoAnterior = misFijosHash.get(results[i].id);
									if (fijoAnterior != null){
										var latitud = 0;
										var longitud = 0;
										if (fijoAnterior.POSIMOVIL != null) {
											latitud =  fijoAnterior.POSIMOVIL.latitud;
											longitud = fijoAnterior.POSIMOVIL.longitud;
										}
										misFijosHash.get(results[i].id).POSIMOVIL = results[i];
										if (latitud != results[i].latitud || longitud != results[i].longitud) {
											if (FIJ_SIMPLEVIEW){
												cMapController.getMapActive().putSimpleIconFijo(results[i].id);
											}else{
												cMapController.getMapActive().putIconFijo(results[i].id);
											}
										}
									}
								}
							 }
							 flagCargarPosiFijo = false;
							 $j("#iconoMapa").removeClass().addClass("icono_mapa");
							 //llamo a callback
							 if (callback!=null){
								 callback();
							 }
						  }
		var onError = function(req){
							flagCargarPosiFijo = false;
							 $j("#iconoMapa").removeClass().addClass("icono_mapa");
						  }
		myAjax.send('querycontroller.php', params, onReady, onError);
	}


/****************************CARGA DE MOVILES********************************/
	function OnReadyStateChangeMisFijos(){
		ready = reqHandlerMisFijos.readyState;
		if (ready == READY_STATE_COMPLETE) {
			if(LOGIN.objetivoDB != 1){//si no es fijo
				dinamicIncludes_Map.setMessage('Cargando MOVILES...');
				CargarMisGruposVehiculos();
			}else{
				if(LOGIN.isBykom && flotaCentralId!=""){//si es fijo y tiene central
					dinamicIncludes_Map.setMessage('Cargando MOVILES...');
					CargarMisGruposVehiculos();
				}else{//si no tiene central o no es bykom
					//en CargarMisGrupos tambien se llama a CargarMisZonas al terminar, para poder saber cuando se termina 
					//de cargar los hash y asi poder verificar con la configuracion guardada
					if(LOGIN.PERMISOS[4]){
						dinamicIncludes_Map.setMessage('Cargando Mis Puntos...');
						CargarMisGrupos();//carga los grupos de "MisPuntos"
					}else{
						cMapController.finCargaInicial();
					}	
				}
			}
			misFijosJSON = jQuery.parseJSON(reqHandlerMisFijos.responseText);
			if(misFijosJSON != false){
				var countFijos = misFijosJSON.length;
				var hayMasLotes = false;
				if (countFijos == misFijos_loteo + 1){
					countFijos=countFijos-1;
					hayMasLotes = true;
				}
				for (i=0; i<countFijos; i++){
					misFijosHash.put(misFijosJSON[i].id.toString(),misFijosJSON[i]);
				}
				fijosCargadosFlag = true;
				for(var i=0;i<cMapController.getMaps().length;i++){
					if(cMapController.getMapasVisibles().length>0){
						iMapaVisible = cMapController.getMapasVisibles()[i];
					}else{
						iMapaVisible = i;
					}
					cMapController.getMapById(iMapaVisible).refreshViewMisFijos();
				}
				if(countFijos==1 && LOGIN.objetivoDB == 1){
					cMapController.getMapActive().getFijosVisiblesId().push(misFijosJSON[0].id.toString());
					if (FIJ_SIMPLEVIEW){
						cMapController.getMapActive().putSimpleIconFijo(misFijosJSON[0].id);
					}else{
						cMapController.getMapActive().putIconFijo(misFijosJSON[0].id);
					}
					var posifijo = misFijosHash.get(misFijosJSON[0].id.toString());
					if( (posifijo.latitud != "" &&  posifijo.longitud!="") && (posifijo.latitud!=null && posifijo.longitud!=null) ){
						cMapController.getMapActive().centrar(posifijo.latitud, posifijo.longitud);
						//cMapController.getMapActive().putHighlightCircle(new OpenLayers.LonLat(parseFloat(posifijo.longitud), parseFloat(posifijo.latitud)).transform(cMapController.getMapActive().getDisplayProjection(), cMapController.getMapActive().getProjection()));
					}
					//cMapController.getMapActive().localizarFijo(misFijosJSON[0].id.toString());
				}
			}else{ //Se produjo un error
				/*alert('JSONFIJOS:' + misFijosJSON);
				alert('Se produjo un error en la conexion, por favor reintente inicializar la seccion de mapas.');*/
				return false;
			}
			$j("#iconoMapa").removeClass().addClass("icono_mapa");
			autoRefreshFlag = 0;
		}
	}

	var loteActualCargaFijos = 0;
	function CargarMisFijos() {
		nroLote = 0;
		//Controles OpenLayers
		if (FIJ_SIMPLEVIEW){
			for(var i=0;i<cantMapas;i++){
				if(cMapController.getMapasVisibles().length>0){
					iMapaVisible = cMapController.getMapasVisibles()[i];
				}else{
					iMapaVisible = i;
				}
				cMapController.getMapById(iMapaVisible).getMap().addLayer(cMapController.getMapById(iMapaVisible).getFijosSimpleLayer());
				cMapController.getMapById(iMapaVisible).getFijosSimpleLayer().div.style.zIndex=901;
				cMapController.getMapById(iMapaVisible).getMap().addControl(cMapController.getMapById(iMapaVisible).getSelectFijoSimple());
				cMapController.getMapById(iMapaVisible).getSelectFijoSimple().activate();
			}
		}
		
		for(var i=0;i<cantMapas;i++){
			if(cMapController.getMapasVisibles().length>0){
				iMapaVisible = cMapController.getMapasVisibles()[i];
			}else{
				iMapaVisible = i;
			}
			//inicializo el vector de los divs contenedores de los mapas
			cMapController.getMapById(iMapaVisible).getMap().addLayer(cMapController.getMapById(iMapaVisible).getFijosLayer());
		}
    	reqParamMisFijos  = "COMMAND=CUENTASFIJOS";
    	reqParamMisFijos += "&CUENTA=" + LOGIN.cuentaFk;
		reqParamMisFijos += "&OBJETIVO=" + parseInt(LOGIN.objetivo);
		reqParamMisFijos += "&OBJETIVODB=" + LOGIN.objetivoDB;
		reqParamMisFijos += "&TABLAID=" + LOGIN.tablaId;
		reqParamMisFijos += "&LBLFORMAT=" + FIJ_LBLFORMAT;
		reqParamMisFijos += "&LBLMAPFORMAT=" + FIJ_LBLMAPFORMAT;
		reqParamMisFijos += "&DDEREC=" + (nroLote * misFijos_loteo);
		reqParamMisFijos += "&COUNTREC=" + (misFijos_loteo + 1);
		if (cMapController.getMapActive().getFijosVisiblesId().length>0){
			reqParamMisFijos += "&CTASVISIBLES=" + cMapController.getMapActive().getFijosVisiblesId().join(",");
		}
		$j("#iconoMapa").removeClass().addClass("icono_mapa_activo");
		autoRefreshFlag = 1;
    	if(msie)
            reqHandlerMisFijos = new ActiveXObject("Microsoft.XMLHTTP");
        else
            reqHandlerMisFijos = new XMLHttpRequest();
        reqHandlerMisFijos.onreadystatechange = OnReadyStateChangeMisFijos;
        reqHandlerMisFijos.open("POST", "querycontroller.php", true);
        reqHandlerMisFijos.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		reqHandlerMisFijos.send(reqParamMisFijos);
    }

	function createMarkerSimpleFijo(point, fijo){
		var strokeColor = "#EFEFEF";
		var fillColor = "#00FF00";
		if ( !parseInt(fijo.activo) ){
			fillColor = "#8E8E8E";
			strokeColor = "#FFFF00";
		}else{
			strokeColor = "#FF1000";
		}

		var fijoFeature = new OpenLayers.Feature.Vector(point,null,{
            strokeColor: strokeColor,
			fillColor: fillColor,
			fillOpacity: FIJ_TRANSPARENCIA,
            strokeWidth: 3,
			fontColor: FIJ_LBLCOLOR,
			pointRadius: FIJ_RADIO,
			fontFamily: 'Verdana',
			fontSize: FIJ_LBLSIZE,
			label: fijo.label,
			fontWeight: 'bold',
			cursor:'pointer',
			labelAlign: 'cm',
			labelSelect: true
        });
		fijoFeature.attributes = {fijoId: fijo.id};
		return fijoFeature;

	}

	function fijoOnClick(evt, fijoId){
		cMapController.getMapActive().seleccionarFijo(fijoId);
		cleanAllStates();
    	//AccordionMenu.openPanelNumber(2);
    	RefreshForm();
        OpenLayers.Event.stop(evt);
	}



//*********************** TRATAMIENTO DE GRUPOS DE VEHICULOS*******************************//
	var reqHandlerMisGruposFijos = null;
	var grupoModificarFijos = null;

	function nuevoGrupoFijos(){
		//mostrar panel de nuevo grupo
		document.getElementById('newGroupTitleFijos').innerHTML = "Nuevo grupo de fijos";
		document.getElementById('newGroupDescFijos').innerHTML = "Los grupos se utilizan para contener fijos que tienen caracteristicas en comun. Sugerimos se les coloque un nombre representativo.";
		hideDiv('div_fijosPpal');
		showDiv('div_nuevoGrupoFijos');
		cleanFormNuevoGrupoFijos();
	}

	function modificarGrupoFijos(idGrupo){
		document.getElementById('newGroupTitleFijos').innerHTML = "Modificar grupo de fijos";
		document.getElementById('newGroupDescFijos').innerHTML = "";
		hideDiv('div_fijosPpal');
		showDiv('div_nuevoGrupoFijos');
		grupoModificarFijos = misGruposFijosHash.get(idGrupo.toString());
		cleanFormModificarGrupoFijos();
	}

	function cleanFormNuevoGrupoFijos(){
		hideDiv('newGroupErrorDisplayFijos');
		document.getElementById("newGroupErrorDisplayFijos").innerHTML = "";
		document.getElementById('grupoIdHIDFijos').value="";
		document.getElementById('descGrupoFijos').value="";
		document.getElementById('nombreGrupoFijos').value="";
	}

	function cleanFormModificarGrupoFijos(){
		hideDiv('newGroupErrorDisplayFijos');
		document.getElementById("newGroupErrorDisplayFijos").innerHTML = "";
		document.getElementById('grupoIdHIDFijos').value=grupoModificarFijos.id;
		document.getElementById('descGrupoFijos').value=grupoModificarFijos.datos;
		document.getElementById('nombreGrupoFijos').value=grupoModificarFijos.nombre;
	}

	function cleanEstadoNuevoGrupoFijos(){ //limpia el mapa del estado "MODIFICAR/NUEVO GRUPO y AGREGAR VEHICULOS A UN GRUPO"
		if (!sendCommandPanelActive){
			cleanEstadoFijosGrupo();
			hideDiv('div_nuevoGrupoFijos');
			hideDiv('div_addFijoToGroup');
			showDiv('div_fijosPpal');
		}
	}

	function OnReadyStateChangeMisGruposFijos(){
		var ready = reqHandlerMisGruposFijos.readyState;
		if (ready == READY_STATE_COMPLETE) {
			//var misGruposFijosJSON = reqHandlerMisGruposFijos.responseText.parseJSON();
			var misGruposFijosJSON = jQuery.parseJSON(reqHandlerMisGruposFijos.responseText);
			if (misGruposFijosJSON.length != 'undefined') {
				for (i=0; i<misGruposFijosJSON.length; i++)
					misGruposFijosHash.put(misGruposFijosJSON[i].id.toString(),misGruposFijosJSON[i]);
			}
		$j("#iconoMapa").removeClass().addClass("icono_mapa");
		autoRefreshFlag = 0;
		CargarMisFijos();
		}
	}

	function CargarMisGruposFijos() {
    	reqParamsMisGrupos = "COMMAND=MISGRUPOSFIJOS";
    	reqParamsMisGrupos += "&CUENTA=" + LOGIN.cuentaFk;
		reqParamsMisGrupos += "&OBJETIVO=" + LOGIN.objetivo;
    	$j("#iconoMapa").removeClass().addClass("icono_mapa_activo");
    	if (msie)
            reqHandlerMisGruposFijos = new ActiveXObject("Microsoft.XMLHTTP");
        else
            reqHandlerMisGruposFijos = new XMLHttpRequest();
        reqHandlerMisGruposFijos.onreadystatechange = OnReadyStateChangeMisGruposFijos;
        reqHandlerMisGruposFijos.open("POST", "querycontroller.php", true);
        reqHandlerMisGruposFijos.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		reqHandlerMisGruposFijos.send(reqParamsMisGrupos);
    }

	function validarNuevoGrupoFijos(){
		errorMsg = '';
		desc = document.getElementById("descGrupoFijos").value;
		nombre = document.getElementById("nombreGrupoFijos").value;

		if (trim(nombre)!=''){
			if (!_validString(nombre))
				errorMsg += "El campo 'nombre' no acepta caracteres especiales.<br>";
			}
		else
			errorMsg += "El campo 'nombre' es obligatorio.<br>";

		if (trim(desc)!=''){
			if (!_validString(desc))
				errorMsg += "El campo 'descripcion' no acepta caracteres especiales.<br>";
			}

		if (errorMsg == '')
			return true;
		document.getElementById("newGroupErrorDisplayFijos").innerHTML = errorMsg;
		showDiv("newGroupErrorDisplayFijos");
		return false;
	}

	var reqHandlerSaveMisGruposFijos = null;
	function OnReadyStateChangeSaveMisGruposFijos(){
		var ready = reqHandlerSaveMisGruposFijos.readyState;
		if (ready == READY_STATE_COMPLETE) {
			var nuevoGrupoFijosJSON = jQuery.parseJSON(reqHandlerSaveMisGruposFijos.responseText);
			if (nuevoGrupoFijosJSON.id != -1) {
				misGruposFijosHash.put(nuevoGrupoFijosJSON.id.toString(),nuevoGrupoFijosJSON);
				alert('Grabacion realizada con exito!');
				cleanEstadoNuevoGrupoFijos();
				cMapController.getMapActive().refreshViewMisFijos();
			}
			else{
				document.getElementById('newGroupErrorDisplayFijos').innerHTML = 'Ocurrio un error en la DB al tratar de guardar el grupo.'
				showDiv('newGroupErrorDisplayFijos');
			}
			$j("#iconoMapa").removeClass().addClass("icono_mapa");
			autoRefreshFlag = 0;
		}
	}

	function guardarGrupoFijos() {
		hideDiv('newGroupErrorDisplayFijos');
		document.getElementById("newGroupErrorDisplayFijos").innerHTML = "";
		if (validarNuevoGrupoFijos()){
			es_flota = 0;
			if (parseInt(LOGIN.objetivoDB) == 3){
				es_flota=1;
			}
	    	var reqParamsMisGrupos = "COMMAND=SAVEGROUP";
    		reqParamsMisGrupos += "&ORDERID="+document.getElementById('grupoIdHIDFijos').value;
			reqParamsMisGrupos += "&NOMBRE="+document.getElementById('nombreGrupoFijos').value;
    		reqParamsMisGrupos += "&DATOS="+document.getElementById('descGrupoFijos').value;
    		reqParamsMisGrupos += "&FLOTAID="+LOGIN.cuentaFk;
			reqParamsMisGrupos += "&ESFLOTA="+es_flota;
    		autoRefreshFlag = 1;
	    	$j("#iconoMapa").removeClass().addClass("icono_mapa_activo");
    		if (msie)
        	    reqHandlerSaveMisGruposFijos = new ActiveXObject("Microsoft.XMLHTTP");
	        else
    	        reqHandlerSaveMisGruposFijos = new XMLHttpRequest();
			reqHandlerSaveMisGruposFijos.onreadystatechange = OnReadyStateChangeSaveMisGruposFijos;
	        reqHandlerSaveMisGruposFijos.open("POST", "persistirfijo.php", true);
    	    reqHandlerSaveMisGruposFijos.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			reqHandlerSaveMisGruposFijos.send(reqParamsMisGrupos);
		}
    }

	var reqHandlerDeleteMisGruposFijos = null;
	var deleteGrupoIdFijos = null;

	function OnReadyStateChangeDeleteGrupoFijo(){
		var ready = reqHandlerDeleteMisGruposFijos.readyState;
		if(ready == READY_STATE_COMPLETE){
			var deleteResponse = jQuery.parseJSON(reqHandlerDeleteMisGruposFijos.responseText);
			if(deleteResponse){
				if(deleteGrupoIdFijos!=null){
					var grupo = misGruposFijosHash.get(deleteGrupoIdFijos.toString());
					misGruposFijosHash.remove(deleteGrupoIdFijos.toString());
					deleteGrupoIdFijos = null;
				}
				cMapController.getMapActive().refreshViewMisFijos();
			}else{
				alert ("Error en consulta a DB: No se pudo eliminar el/los grupos seleccionados");
			}
			$j("#iconoMapa").removeClass().addClass("icono_mapa");
			autoRefreshFlag = 0;
		}
	}

	function eliminarGrupoFijo(idGrupo){
		deleteGrupoIdFijos = null;
		conf = confirm('Esta a punto de eliminar el/los grupos seleccionados. �Desea continuar de todas formas?');
		if (conf){
	    	var reqParamsMisGrupos = "COMMAND=DELETEGROUP";
    		reqParamsMisGrupos += "&ORDERID="+idGrupo;
			deleteGrupoIdFijos = idGrupo;
			autoRefreshFlag = 1;
    		$j("#iconoMapa").removeClass().addClass("icono_mapa_activo");
    		if (msie)
	    	    reqHandlerDeleteMisGruposFijos = new ActiveXObject("Microsoft.XMLHTTP");
    	    else
	    	    reqHandlerDeleteMisGruposFijos = new XMLHttpRequest();
        	reqHandlerDeleteMisGruposFijos.onreadystatechange = OnReadyStateChangeDeleteGrupoFijo;
	        reqHandlerDeleteMisGruposFijos.open("POST", "persistirfijo.php", true);
		    reqHandlerDeleteMisGruposFijos.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			reqHandlerDeleteMisGruposFijos.send(reqParamsMisGrupos);
		}
    }

	function printTableGrupoFijo(){
		tabla = '<table width="260">';
		var misFijosList = misFijosHash.values();
		var count = 0;
		for (var i=0; i<misFijosList.length; i++){
			if (misFijosList[i].grupoId==0){
				tabla += '<tr>';
				tabla += '<td width="19">';
				tabla += '<input type="checkbox" name="boxListaFijosGrupo[]" value="'+misFijosList[i].id+'">';
				tabla += '</td>';
				tabla += '<td><span class="inputLBL">'+misFijosList[i].label+'</span></td>';
				tabla += '</tr>';
				count++;
			}
		}
		if (count==0){
			tabla += '<tr><td>';
			tabla += '<span class="inputLBL">Ya no existen fijos que no esten agrupados.</span>';
			tabla += '</td></tr>';
		}
		tabla += '</table>';
		document.getElementById('divListaFijosGrupo').innerHTML = tabla;
	}

	var asignarFijosGrupoId = new Array();
	var asignarFijosGrupoIdGrupo = null;
	function asignarGrupoFijo(idGrupo){
		printTableGrupoFijo();
		asignarFijosGrupoIdGrupo = idGrupo;
		var grupo = misGruposFijosHash.get(idGrupo.toString());
		/*if ((LOGIN.PERMISOS[9])&&(dinamicIncludes_Map.isLogisticaInclude()))
			cleanFormAplicarRegla();
		}*/
		hideDiv('div_fijosPpal');
		hideDiv('addFijoToGroupErrorDisplay');
		document.getElementById('addFijoToGroupGrupo').innerHTML=grupo.nombre;
		document.getElementById('addFijoToGroupTitle').innerHTML="Asignar fijos a un grupo";
		showDiv('div_addFijoToGroup');
	}

	function cleanEstadoFijosGrupo(){
		hideDiv('div_addFijoToGroup');
		showDiv('div_fijosPpal');
	}

	function validarFijosGrupo(){
		if (asignarFijosGrupoId.length==0){
			document.getElementById('addFijoToGroupErrorDisplay').innerHTML = 'Debe seleccionar al menos un vehiculo.'
			showDiv('addFijoToGroupErrorDisplay');
		    return(false);
		}
		hideDiv('addFijoToGroupErrorDisplay');
		return(true);
	}

	var reqHandlerFijosGrupo = null;
	function OnReadyStateChangeFijosGrupo(){
		var ready = reqHandlerFijosGrupo.readyState;
		if (ready == READY_STATE_COMPLETE) {
			//fijosGrupoJSON = reqHandlerFijosGrupo.responseText.parseJSON();
			fijosGrupoJSON = jQuery.parseJSON(reqHandlerFijosGrupo.responseText);
			if (fijosGrupoJSON) {
				for(var i=0; i<asignarFijosGrupoId.length; i++)
					misFijosHash.get(asignarFijosGrupoId[i]).grupoId=asignarFijosGrupoIdGrupo;
				cMapController.getMapActive().refreshViewMisFijos();
				cleanEstadoFijosGrupo();
			}
			else{
				document.getElementById('addFijoToGroupErrorDisplay').innerHTML = 'Ocurrio un error en la DB al tratar de agrupar los fijos.'
				showDiv('addFijoToGroupErrorDisplay');
			}
			$j("#iconoMapa").removeClass().addClass("icono_mapa");
			autoRefreshFlag = 0;
		}
	}

	function guardarFijosGrupo() {
		asignarFijosGrupoId = new Array();
		var fields = document.getElementsByName('boxListaFijosGrupo[]');
		for (var i = 0; i < fields.length; i++){
			if (fields[i].checked)
				asignarFijosGrupoId.push(fields[i].value);
			}
		if (validarFijosGrupo()){
	    	var reqParamsFijosGrupo = "COMMAND=AGRUPAMOVIL";
    		reqParamsFijosGrupo += "&GRUPOID="+asignarFijosGrupoIdGrupo;
			reqParamsFijosGrupo += "&MOVILESIDS="+asignarFijosGrupoId.toString();
    		autoRefreshFlag = 1;
	    	$j("#iconoMapa").removeClass().addClass("icono_mapa_activo");
    		if (msie)
        	    reqHandlerFijosGrupo = new ActiveXObject("Microsoft.XMLHTTP");
	        else
    	        reqHandlerFijosGrupo = new XMLHttpRequest();
			reqHandlerFijosGrupo.onreadystatechange = OnReadyStateChangeFijosGrupo;
	        reqHandlerFijosGrupo.open("POST", "persistirfijo.php", true);
    	    reqHandlerFijosGrupo.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			reqHandlerFijosGrupo.send(reqParamsFijosGrupo);
		}
    }

	function desagruparFijo(idFijo){
		asignarFijosGrupoId = new Array();
		asignarFijosGrupoId.push(idFijo);
		asignarFijosGrupoIdGrupo = '0';
		var reqParamsFijosGrupo = "COMMAND=AGRUPAMOVIL";
   		reqParamsFijosGrupo += "&GRUPOID="+asignarFijosGrupoIdGrupo;
		reqParamsFijosGrupo += "&MOVILESIDS="+asignarFijosGrupoId.toString();
   		autoRefreshFlag = 1;
    	$j("#iconoMapa").removeClass().addClass("icono_mapa_activo");
   		if (msie)
       	    reqHandlerFijosGrupo = new ActiveXObject("Microsoft.XMLHTTP");
        else
   	        reqHandlerFijosGrupo = new XMLHttpRequest();
		reqHandlerFijosGrupo.onreadystatechange = OnReadyStateChangeFijosGrupo;
        reqHandlerFijosGrupo.open("POST", "persistirfijo.php", true);
   	    reqHandlerFijosGrupo.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		reqHandlerFijosGrupo.send(reqParamsFijosGrupo);
	}

//BUSQUEDA DE MOVILES EN EL ARBOL

	function searchFijo(texto){
		if ((texto.length > 0)&&(texto!="Buscar...")){
			textToSearchFijo = texto.toUpperCase();
			printTableMisFijos();
		}
	}

	function cleanSearchFijo(){
		if (textToSearchFijo!=''){
			textToSearchFijo = '';
			document.getElementById('searchFijoInput').value="Buscar...";
			document.getElementById('countSearchFijo').innerHTML = "";
			printTableMisFijos();
		}
	}

	function collapseBuscarFijos(){
		var searchBoxDiv = document.getElementById('searcBoxFijos');
		if (searchBoxDiv.style.display!="block"){ //esta oculto, tengo que mostrarlo
			document.getElementById('minimenuContentFijosPpal').className='minimenuContentWithSearch';
			searchBoxDiv.style.display="block";
			document.getElementById('searchFijoInput').focus();
		}
		else{
			document.getElementById('minimenuContentFijosPpal').className='minimenuContent';
			searchBoxDiv.style.display="none";
		}
	}

//ACTIVAR/DESACTIVAR VEHICULOS

	var reqHandlerFijosActivar = null;
	var tempFijoActivarId = null;
	var tempFijoActivarEstado = null;
	function OnReadyStateChangeFijosActivar(){
		var ready = reqHandlerFijosActivar.readyState;
		if (ready == READY_STATE_COMPLETE) {
			fijosActivarJSON = jQuery.parseJSON(reqHandlerFijosActivar.responseText);
			if (fijosActivarJSON) {
				misFijosHash.get(tempFijoActivarId.toString()).activo=tempFijoActivarEstado;
				cMapController.getMapActive().refreshViewMisFijos();
			}
			else{
				alert('Se produjo un error al intentar cambiar el estado del vehiculo');
			}
			$j("#iconoMapa").removeClass().addClass("icono_mapa");
			autoRefreshFlag = 0;
		}
	}

	function activarFijo(fijoId, activar) {
		tempFijoActivarId = fijoId;
		tempFijoActivarEstado = activar;
		var fields = document.getElementsByName('boxListaFijosGrupo[]');
    	var reqParamsFijosActivar = "COMMAND=ACTIVAMOVIL";
   		reqParamsFijosActivar += "&MOVILID="+fijoId;
		reqParamsFijosActivar += "&ESTADO="+activar;
   		autoRefreshFlag = 1;
    	$j("#iconoMapa").removeClass().addClass("icono_mapa_activo");
   		if (msie)
       	    reqHandlerFijosActivar = new ActiveXObject("Microsoft.XMLHTTP");
        else
   	        reqHandlerFijosActivar = new XMLHttpRequest();
		reqHandlerFijosActivar.onreadystatechange = OnReadyStateChangeFijosActivar;
        reqHandlerFijosActivar.open("POST", "persistirfijo.php", true);
   	    reqHandlerFijosActivar.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		reqHandlerFijosActivar.send(reqParamsFijosActivar);
    }
	
	function monitorearFijo(idFijo){
		if (fijosMonitoreadosId.length>=misFijos_limitMonitor){
			alert('Se ha alcanzado el limite de fijos que pueden monitorearse ('+misFijos_limitMonitor+'). Para monitorear este fijo sera necesario quitar otro de la lista.')
			return false;
		}
		fijosMonitoreadosId.push(idFijo.toString());
		cMapController.getMapActive().refreshViewMisFijos();
		cambiarIconoMonitor(false);//cambia el icono de monitorear en el menu de seguimiento y seleccion
		return true;
	}

	function noMonitorearFijo(idFijo){
		var pos=indexOfArray(fijosMonitoreadosId,idFijo.toString());
		if (pos!=-1)
			fijosMonitoreadosId.splice(pos,1);
		cMapController.getMapActive().refreshViewMisFijos();
		cambiarIconoMonitor(true);//cambia el icono de monitorear en el menu de seguimiento y seleccion
	}

	function monitorearFijosSeleccionados(){
		fijosMonitoreadosId = new Array();
		for (var i=0; i<cMapController.getMapActive().getFijosSeleccionadosId().length;i++){
			fijosMonitoreadosId[i] = cMapController.getMapActive().getFijosSeleccionadosId()[i];
			if (i==misFijos_limitMonitor-1){
				alert('Se alcanzo el limite de fijos que pueden monitorearse al mismo tiempo, solo se incluiran los primeros '+misFijos_limitMonitor+' seleccionados.')
				break;
			}
		}
		cMapController.getMapActive().refreshViewMisFijos();
	}

	function noMonitorearFijosSeleccionados(){
		for (var i=0;i<cMapController.getMapActive().getFijosSeleccionadosId().length;i++){
			var pos=indexOfArray(fijosMonitoreadosId,cMapController.getMapActive().getFijosSeleccionadosId()[i].toString());
			if (pos!=-1)
				fijosMonitoreadosId.splice(pos,1);
		}
		cMapController.getMapActive().refreshViewMisFijos();
	}

//FILTRADO DE FIJOS INACTIVOS
	function filtrarFijosInactivos(){
		if (filtrarFijosInactivos) {
			filtrarFijosInactivos = false;
			document.getElementById('filtrarFijosBTN').className = 'BTNfiltrar';
		}
		else{
			filtrarFijosInactivos = true;
			document.getElementById('filtrarFijosBTN').className = 'BTNnoFiltrar';
			var misFijosList = misFijosHash.values();
			for (var i=0; i<misFijosList.length; i++){
				var fijo = misFijosList[i];
				if (parseInt(fijo.activo)==0){
					// 1) lo quito de la lista de fijos seleccionados
					var pos=indexOfArray(cMapController.getMapActive().getFijosSeleccionadosId(),fijo.id.toString());
					if (pos!=-1)
						cMapController.getMapActive().getFijosSeleccionadosId().splice(pos,1);
					// 2) lo quito de la lista de fijos monitoreados
					pos=indexOfArray(fijosMonitoreadosId,fijo.id.toString());
					if (pos!=-1)
						fijosMonitoreadosId.splice(pos,1);
					// 3) lo oculto a la vista (esto tb lo quita de seleccion y de seguimiento)
					ocultarFijo(fijo.id);
				}
			}
		}
		cMapController.getMapActive().refreshViewMisFijos();
	}

//*********************** LIBRETA DE CONTACTOS *******************************//

	function createOpenWindow_contactoFijos(fijoID){
		var openPopUp = function(contactoLIB, id, title){
							contactoLIB.urlBase = '';
							contactoLIB.print();
							var div = document.createElement('div');
							div.appendChild(contactoLIB.getContainer());
							var divwin = dhtmlwindow.open(id, 'div', div, title, 'width=455px,height=305px,left=200px,top=150px,resize=0,scrolling=0');
			};

		if (fijoID==null){
			var objet = LOGIN.objetivo;
			if (parseInt(LOGIN.objetivo)==4)
				objet = LOGIN.objetivoDB;
			var id = LOGIN.cuentaFk+'_'+objet;
			var title = 'Contactos generales de la cuenta';
			var editmode = ((LOGIN.PERMISOS[15]))? true : false;
			var	contactoLIB = new ContactosLIB({
										     busyImg: document.getElementById('busyImg'),
											 urlServlet: 'persistircontactos.php',
											 urlBase: '',
											 cuenta: LOGIN.cuentaFk,
											 objetivo: objet,
											 editMode: editmode
										  });
			contactoLIB.cargar(function(){
										 openPopUp(contactoLIB, id, title);
									   });
	       }
		else{
			var fijo = misFijosHash.get(fijoID.toString());
			if (fijo!=null){
				var id = fijo.id.toString()+'_2';
				var title = 'Contactos del fijo '+fijo.label;
				var editmode = ((LOGIN.PERMISOS[17]))? true : false;
				var contactoLIB = new ContactosLIB({
										     busyImg: document.getElementById('busyImg'),
											 urlServlet: 'persistircontactos.php',
											 urlBase: '',
											 cuenta: fijo.id.toString(),
											 objetivo: 2,
											 editMode: editmode
										  });
				contactoLIB.cargar(function(){
											    openPopUp(contactoLIB, id, title);
											  });
			}
		}
	}